"""
格式:
try:
    可能出现异常的代码
except:
    try中的代码出现异常后执行的代码
else:
    try中的代码没有出现异常时执行的代码
finally:
    无论是否出现异常都会执行的代码
"""

try:
    # print(a)
    print(1)
except:
    print('当代码出现异常时执行')
else:
    print('当代码没有出现异常时执行')
finally:
    print('无论是否出现异常都会执行')

print('---------------------')
# 思考: 卸载finally中和写在异常捕获之外一样么? 绝大多数情况下无区别,但是finally更加厉害,在异常捕获失败后,依然可以执行
try:
    print(a)
    # print(1)
except:
    print('当代码出现异常时执行')
else:
    print('当代码没有出现异常时执行')

print('无论是否出现异常都会执行')

print('---------------------')
try:
    print(a)
    # print(1)
except TypeError:
    print('当代码出现异常时执行')
else:
    print('当代码没有出现异常时执行')
finally:
    print('无论是否出现异常都会执行') # 此为止代码,无论是否出现异常都会执行,且异常捕获失败后,也会执行完该代码再结束程序

print('我在46行') # 此带代码,无论是否出现异常都会执行,但是异常捕获失败后,直接退出程序,不会执行该代码.


# 综上所述 : else 和finally 是锦上添花的 ,会可以提高效率,增加可读性,不会不影响开发.

# finally使用场景:
# 1. 当程序崩溃时,需要记录完崩溃原因后再结束长须
# 2. 当读写内容时,程序崩溃则立即关闭文件,防止出现文件损坏


